 #include <boost/tuple/tuple.hpp>
 #include <boost/tuple/tuple_io.hpp>
 #include <string>
 #include <iostream>

 #include <mockpp/mockpp.h>
 #include <mockpp/VisitableMockObject.h>
 #include <mockpp/chaining/ChainingMockObjectSupport.h>

 using namespace std;
 using namespace boost;

 typedef tuple<int, int> tuple_t;
/*
std::ostream& operator<<(std::ostream& s, const tuple_t& t)
{
  s << "tuple_t";
  return s;
}
*/
MOCKPP_OSTREAMABLE (tuple_t)

 class Foo
 {
 public:
 virtual int bar ( const tuple_t& ){}
 };

 class mock : public MOCKPP_NS::VisitableMockObject,
 public Foo
 {
 mock ():
 VisitableMockObject (MOCKPP_PCHAR("mock"), 0 ),
 MOCKPP_CONSTRUCT_MEMBERS_FOR_VISITABLE_EXT1 ( bar, ext)
 {}

 MOCKPP_VISITABLE_EXT1
 (
 mock, int, bar, const tuple_t&,
 int, ext, tuple_t
 );
 };

 int main (int argc, char* argv[])
 {
   tuple_t t;
   std::basic_ostringstream<char> oss;
   oss << t;
   std::cout << t << std::endl;
   std::cout << "ready" << std::endl;
 }
